#include <stdio.h>  
#include <stdio.h>
#include <time.h>  
#include <sys/time.h>  
#include <stdlib.h>  
#include <signal.h>  
#include <unistd.h>
  
static int count = 0;   
  
void set_timer()  
{  
    struct itimerval itv;  
    itv.it_interval.tv_sec = 3;  //自动装载值，以后每次的定时时间
    itv.it_interval.tv_usec = 0;  
    itv.it_value.tv_sec = 1;  	//第一次定时时间
    itv.it_value.tv_usec = 0;  
    setitimer(ITIMER_REAL, &itv, NULL);  
}

void cancel_timer()
{
	//it_interval和it_value为零时即可取消定时器
	struct itimerval value; 
    value.it_value.tv_sec = 0; 
    value.it_value.tv_usec = 0; 
    value.it_interval = value.it_value; 
    setitimer(ITIMER_REAL, &value, NULL); 
}

void signal_handler(int m)  
{  
    count ++;  
    printf("%d\n", count); 
	
	if(count >= 3)
	{
		cancel_timer();
	}
}  
  
int main()  
{  
    signal(SIGALRM, signal_handler);
	//设置定时器
    set_timer();  
    while(count < 5){
		sleep(1); //需要sleep，否则会一直无法退出程序
	}
	printf("exit\n");
    return 1;
}  